Протокол за комуникация ModBus
Протоколът Modbus е универсален комуникационен протокол, който се използва широко в днешния индустриален контрол. С този протокол контролерите могат да комуникират помежду си или с други устройства чрез мрежа, като Ethernet. Протоколът Modbus използва технология за комуникация от основното устройство, т.е. активно запитване и управление от основното устройство. Протоколът, използван от управляващото устройство, обикновено се нарича Modbus Master, а протоколът, използван от устройството, се нарича Modbus Slave. Типичното основно оборудване включва индустриални контролери и промишлени контролери; Типични от устройства като PLC програмируеми контролери и т.н. Физическият интерфейс за комуникация на Modbus може да бъде избран за сериен порт (включително RS232 и RS485), както и за Ethernet порт. Неговата комуникация следва следния процес:
Изпращане на заявки от основното устройство
Анализиране и обработка на заявките от основното устройство и изпращане на резултатите на основното устройство
● Ако се появи някаква грешка, ще се върне аномален код от устройството
Информация за софтуера за комуникационния протокол ModBus
Софтуерните продукти за комуникационния протокол ModBus, пуснати от Ингвинг, се използват основно в средата на вградената дъщерна платка ARM9 на Ингвинг, като дъщерните платки на Ингвинг имат богат сериен порт, мрежови ресурси, универсален GPIO интерфейс и др., като същевременно имат мощна обработъчна мощност. В комбинация със софтуера за комуникационния протокол ModBus е много лесно да се създадат платформи за приложения, които отговарят на спецификациите за комуникация ModBus. За основния начин на комуникация ModBus, пакетът ModBus е разделен на две отделни части, които могат да се използват, а именно "ModBus Master Software" (по-късно modbus_Master) и "ModBus Device Side Software" (по-късно modbus_Slave). В момента софтуерът за комуникационния протокол ModBus се използва в WinCE среда и е достъпен за клиентите под формата на C функция плюс статична LIB библиотека. Основните му характеристики са следните:
Изключително подходящ за индустриални приложения в реално време
Може да поддържа приложения ModBus базирани на сериен порт или приложения ModBus базирани на TCP
Режим на предаване RTU
Поддръжка за повечето операции с Modbus код, включително битови операции на bobини, дискретни превключватели и операции с байтове на регистри
Поддръжка на адреси за излъчване
Гъвкаво настройване на времето за ModBus комуникация
● Можете да получите подробна информация за кодовете на грешките на протокола за пренос в комуникацията
Софтуерна диаграма за комуникация с протокола ModBus

Функционални кодове, поддържани от софтуера ModBus
Функционален код |
Описание |
1 |
Четене на една bobина |
2 |
Четене на дискретен вход |
3 |
Прочетете няколко регистра |
4 |
Четене на входния регистър |
5 |
Написане на една bobина |
6 |
Написане на един регистър |
15 |
Написане на няколко bobини |
16 |
Записване на няколко регистра |
22 |
Блокиране на записния регистър |
23 |
Четене/записване на регистри |
Основни методи за използване на софтуера
За да се улесни използването на приложението и да се поддържа последователна форма на код за различните комуникационни медии, API функциите в софтуера за протокола ModBus, предлаган от Ingron (включително modbus_Master и modbus_Slave), могат едновременно да поддържат протокола Modbus, базиран на сериен порт и TCP, приложението просто трябва да разграничи с различни параметри, когато извиква функцията за инициализация, за инструкции за параметрите вижте съответните заглавия: modbus_Master.h и modbus_Slave.h
Приложение на modbus_master
Приложението като Modbus клиентски режим е основно подготвяне на заявки и изпращане на заявки към сървърното устройство и чакане на отговора на сървъра. При разработването на такива приложения, потребителите могат да се позовават на стандартната литература на Modbus и ръководството за данни за комуникационния интерфейс на контролираното устройство, като директно се обаждат на пакета modbus_Master, предоставен от Интрон, за да осигурят съответната функционалност на оперативния API, за да завършат достъпа и контрола на сървърното устройство. При разработването на такива приложения потребителят трябва да включва само modbus_master.h/modbus_master.lib.
Приложение на modbus_slave
Като ModBus сървър модел приложение, основно трябва да се реализира анализ и отговор на ModBus приложение съобщения, но това е само част от цялата ModBus комуникация, другата част е също така трябва да има достъп до данните на приложението, тази част от съдържанието трябва да се дефинира от самия потребител. За да се улесни използването на клиентите, автоматичното зареждане на тези функции на потребителския интерфейс е реализирано под формата на функционен указател в пакета modbus_Slave, който свързва обработката на данни на приложението на потребителя с отговора на съобщенията на приложението ModBus. Потребителите просто трябва да дефинират тези функции на интерфейса според нуждите си, за да реализират съответните функции, като отделните функции се дефинират чрез специален CPP файл: DataProvider.cpp.
От това се вижда, че при разработването на подобни приложения трябва да се съдържат две части съдържание, една част от която е API функцията, дефинирана в modbus_slave.h/modbus_slave.lib; Другата част е функцията на потребителския интерфейс за данни, дефинирана от DataProvider.h /DataProvider.cpp, където функцията на интерфейса изисква потребителите да бъдат конкретно имплементирани в DataProvider.cpp.
За да отговорите навременно на съобщенията на ModBus приложението, трябва да се отбележи, че при програмиране трябва да се проектира нишка, която повиква многократно изпълнителната функция modbus_Slave, която е в режим на блокиране.
Например:
(1) Стартиране на протокола за устройството Modbus
hPort = mbusSlave_StartupServer (_T('*'), 1, 10000, mbusSlave_Interface );
Или...
hPort=mbusSlave_StartupServer(_T)"COM3:9600-8-1-0"),1,10000, mbusSlave_Interface );
(2) Извикане на изпълнителна функция в нишката Serverloop за отговор на заявка
докато( 1 )
{
//Извикане на изпълнителна функция за анализ и отговор на ModBus съобщения.
резултат = mbusSlave_ServerLoop( hPort );
ако(резултат!=0)//Проверка за връщане на грешка
{
//Отправяне на грешки: Този пример е текстово съобщение за получаване и отпечатване на код за грешка
wcscpy( szText, mbusSlave_GetErrorText( резултат ) );
i1 = wcslen( szText );
ако( i1>0 )
{
wcstombs( strText, szText, i1 );
отпечатъкът(код на грешката: %s! n'Stretex);
}
}
}
Преди това софтуерът за комуникационния протокол ModBus се предлагаше на клиентите под формата на функция C плюс статична библиотека (файл modbus.lib или libmodbus.a). Тъй като все повече клиенти използват протокола ModBus, по-специално софтуера за магистърския протокол (модbus_Master) под формата на динамична библиотека (файл modbus_Master.dll или libmbusmaster.so) в ядрото на вградените индустриални контролни платки на Ингвинг, за да улесни повикването на приложенията на клиентите. Предварително инсталираните модбусови контролни платки включват всички основни платки от серията ESM (ESM6802, ESM6800, ESM335x, ESM928x и др.).
Свързани референтни материали
| Приложение за събиране на токови пръстени от 4 до 20mA | Софтуер за комуникационния протокол Modbus под WinCE | |
| Софтуер за протокол Modbus за устройството под WinCE | Вградена Linux дъщерна платка с поддръжка на протокола Modbus | |
| Софтуерът Modbus за Linux | ESM6802 поддържа разработване на Qt MODBUS програми | |
| Предварително инсталиране на протокола Modbus в дъщерната платка |
